package models

import (
	"driver_srv/basic/config"
	"gorm.io/gorm"
	"time"
)

// 用户表
type User struct {
	Id                      uint64         `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	NickName                string         `gorm:"column:nick_name;type:varchar(255);comment:真实姓名;default:NULL;" json:"nick_name"`                                         // 真实姓名
	Mobile                  string         `gorm:"column:mobile;type:varchar(255);comment:电话号码;default:NULL;" json:"mobile"`                                               // 电话号码
	Password                string         `gorm:"column:password;type:varchar(255);comment:密码;default:NULL;" json:"password"`                                             // 密码
	Sex                     string         `gorm:"column:sex;type:varchar(255);comment:性别;default:NULL;" json:"sex"`                                                       // 性别
	Address                 string         `gorm:"column:address;type:varchar(255);comment:地址;default:NULL;" json:"address"`                                               // 地址
	UserRegisterTime        time.Time      `gorm:"column:user_register_time;type:datetime;comment:用户注册时间;default:NULL;" json:"user_register_time"`                         // 用户注册时间
	UserLoginTime           time.Time      `gorm:"column:user_login_time;type:datetime;comment:用户上次登录时间;default:NULL;" json:"user_login_time"`                             // 用户上次登录时间
	LastLoginMethod         uint32         `gorm:"column:last_login_method;type:int UNSIGNED;comment:上次登录方式;default:NULL;" json:"last_login_method"`                       // 上次登录方式
	LastLoginTimeOnScreen   time.Time      `gorm:"column:last_login_time_on_screen;type:datetime;comment:上次登录大屏时间;default:NULL;" json:"last_login_time_on_screen"`         // 上次登录大屏时间
	LastLoginMethodOnScreen uint32         `gorm:"column:last_login_method_on_screen;type:int UNSIGNED;comment:上次登录大屏方式;default:NULL;" json:"last_login_method_on_screen"` // 上次登录大屏方式
	LastOrderTime           time.Time      `gorm:"column:last_order_time;type:datetime;comment:最近下单时间;default:NULL;" json:"last_order_time"`                               // 最近下单时间
	CType                   int32          `gorm:"column:c_type;type:int;default:NULL;" json:"c_type"`
	UserRole                uint8          `gorm:"column:user_role;type:tinyint UNSIGNED;comment:用户角色: 1乘客 2司机 3管理员;not null;" json:"user_role"` // 用户角色: 1乘客 2司机 3管理员
	Status                  int32          `gorm:"column:status;type:int;default:NULL;" json:"status"`
	CreatedAt               time.Time      `gorm:"column:created_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"`
	UpdatedAt               time.Time      `gorm:"column:updated_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"`
	DeletedAt               gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);default:NULL;" json:"deleted_at"`
}

func (u *User) TableName() string {
	return "user"
}
func (u *User) FindUserById() error {
	return config.DB.Where("id = ?", u.Id).Limit(1).Find(&u).Error
}
